package com.yht.redbook.data.align.domain.mapper;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SelectRecordMapper {

    /**
     * 日增量表：关注数计数变更 - 批量查询
     *
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignFollowingCountTemplate(@Param("tableNameSuffix") String tableNameSuffix, @Param("batchSize") int batchSize);

    /**
     * 查询 t_following 表，获取关注总数
     *
     * @param userId
     * @return
     */
    int selectCountFromFollowingTableByUserId(long userId);

    /**
     * 日增量表：粉丝数计数变更 - 批量查询
     *
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignFansCountTemplate(@Param("tableNameSuffix") String tableNameSuffix, @Param("batchSize") int batchSize);

    /**
     * 查询 t_fans 表，获取粉丝总数
     *
     * @param userId
     * @return
     */
    int selectCountFromFansTableByUserId(long userId);

    /**
     * 日增量表：用户点赞总数计数变更 - 批量查询
     *
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignUserLikeCountTemplate(@Param("tableNameSuffix") String tableNameSuffix, @Param("batchSize") int batchSize);

    /**
     * 查询 t_note_like 表，获取用户点赞总数
     *
     * @param userId
     * @return
     */
    int selectCountFromUserLikeTableByUserId(long userId);

    /**
     * 日增量表：用户收藏总数计数变更 - 批量查询
     *
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignUserCollectCountTemplate(@Param("tableNameSuffix") String tableNameSuffix, @Param("batchSize") int batchSize);

    /**
     * 查询 t_note_collection 表，获取用户收藏总数
     *
     * @param userId
     * @return
     */
    int selectCountFromUserCollectTableByUserId(long userId);

    /**
     * 日增量表：点赞数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignNoteLikeCountTempTable(@Param("tableNameSuffix") String tableNameSuffix, @Param("batchSize") int batchSize);

    /**
     * 查询 t_note_like 表，获取点赞总数
     *
     * @param noteId
     * @return
     */
    int selectCountFromNoteLikeTableByNoteId(long noteId);

    /**
     * 日增量表：收藏数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignNoteCollectCountTempTable(@Param("tableNameSuffix") String tableNameSuffix, @Param("batchSize") int batchSize);

    /**
     * 查询 t_note_collection 表，获取笔记收藏总数
     *
     * @param noteId
     * @return
     */
    int selectCountFromNoteCollectTableByNoteId(long noteId);

    /**
     * 日增量表：笔记发布数计数变更 - 批量查询
     * @param tableNameSuffix
     * @param batchSize
     * @return
     */
    List<Long> selectBatchFromDataAlignNotePublishCountTempTable(@Param("tableNameSuffix") String tableNameSuffix, @Param("batchSize") int batchSize);

    /**
     * 查询 t_note 表，获取对应用户笔记发布总数
     *
     * @param userId
     * @return
     */
    int selectCountFromNotePublishTableByNoteId(long userId);
}
